Fork me on GitHub

Java 工程师要学什么

Java 工程师要学什么

参考语法:https://www.jianshu.com/p/af48cc77b57a

作为一个 java 程序员,总是觉得要学的东西非常多,但又不知从何学起从何入手。所以针对这种情况,我整理了一个比较系统的知识学习框架。希望可以帮到和我有同样烦恼的同学。希望一下的内容,可以你在脑海中有一个整体的学习框架。

数据结构和算法

数据结构和算法,特别是算法,是程序员的一个分水岭。可能在刚开始工作的时候不是很明显,但是当你有一定的工作经验之后,你接触的业务越来越多也越来复杂。这时候,假如你会算法,就可以派上用场了;假如你不会算法,那么别人一句话的代码,你就可能要写上好几个 if else 了。大家都知道,算法写出来程序效率是比你写很多if else 要高很多倍的。进一步讲,如果你能算法用到实际的业务中,说明你的思维逻辑也非常不错。这在我们公司,对于 review code 的人来说,是一个有很高的加分项。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
graph LR
jichu("基础")
jichu-->shujujichu("数据结构")
shujujichu-->duilie("队列")
shujujichu-->zhan("栈")
shujujichu-->lianbiao("链表")
shujujichu-->shuzu("数组")
shujujichu-->zidian("字典")
shujujichu-->tu("图")
shujujichu-->erchashu("二叉树")
shujujichu-->pinghengerchashu("平衡二叉树")
shujujichu-->hongheishu("红黑树")
shujujichu-->Bshu("B+树")
shujujichu-->LSMshu("LSM树")
jichu-->jibensuanfa("基本算法")
jibensuanfa-->paixusuanfa("排序算法")
paixusuanfa-->bijiaopaixu("比较类排序")
bijiaopaixu-->jiaohuanpaixu("交换排序")
jiaohuanpaixu-->maopaopaixu("冒泡排序")
jiaohuanpaixu-->kuasupaixu("快速排序")
bijiaopaixu-->charupaixu("插入排序")
charupaixu-->jiandancharupaixu("简单插入排序")
charupaixu-->xierpaixu("希尔排序")
bijiaopaixu-->xuanzepaixu("选择排序")
xuanzepaixu-->jiandanxuanzepaixu("简单选择排序")
xuanzepaixu-->duipaixu("堆排序")
bijiaopaixu-->guibingpaixu("归并排序")
guibingpaixu-->erluguibingpaixu("二路归并排序")
guibingpaixu-->duoluguibingpaixu("多路归并排序")
paixusuanfa-->feibijiaopaixu("非比较类排序")
feibijiaopaixu-->jishupaixu("计数排序")
feibijiaopaixu-->tongpaixu("桶排序")
feibijiaopaixu-->jiishupaixu("基数排序")
jibensuanfa-->chazhaosuanfa("查找算法")
jibensuanfa-->diguisuanfa("递归算法")
jibensuanfa-->tanxinsuanfa("贪心算法")
jibensuanfa-->dongtaiguihua("动态规划")
jibensuanfa-->fenzhisuanfa("分治算法")
jibensuanfa-->huisusuanfa("回溯算法")
jibensuanfa-->jianzhisuanfa("剪枝算法")
jibensuanfa-->tusuanfa("图算法")
jibensuanfa-->dikesitelasuanfa("狄克斯特拉算法")
jibensuanfa-->bulongguolvqi("布隆过滤器算法")
jibensuanfa-->xuehuaxuanfa("雪花算法")
jibensuanfa-->Kzuijinling("K最近邻算法")
jichu-->shujukujichu("数据库基础")
shujukujichu--> MySQl("MySQL")
MySQl--> innoDB("InnoDB")
MySQl--> MyISSAM("MyISSAM")
MySQl--> zifiji("字符集")
MySQl--> suoyin("索引")
MySQl--> shujukufanshi("数据库范式")
MySQl--> shujukugelijibie("数据库隔离级别")
MySQl--> huandu("幻读")
MySQl--> mvcc("MVCC")
MySQl--> shujukusuo("数据库锁")
shujukujichu--> Oracle("Oracle")
jichu-->wangluojichu("网路基础")
wangluojichu-->wangluoxieyi("网络协议")
wangluojichu-->https("HTTP/S")
wangluojichu-->wangluozhangtai("网络状态")
wangluojichu-->changlianjie("长连接")
wangluojichu-->wangluowoshou("网络握手")
wangluojichu-->huadongchuankou("滑动窗口")
wangluojichu-->wangluocanshu("网络参数")
wangluojichu-->tongxingmoxing("通信模型")
wangluojichu-->xuliehua("序列化")
wangluojichu-->pacong("爬虫")
wangluojichu-->netty("Netty")
jichu-->caozuoxitong("操作系统")
caozuoxitong-->cpu("CPU")
caozuoxitong-->neicun("内存")
caozuoxitong-->wangluo("网络")
caozuoxitong-->io("I/O")
caozuoxitong-->jincheng("进程")
caozuoxitong-->diaodusuanfa("调度算法")
caozuoxitong-->zhengze("正则")
caozuoxitong-->Shellbiancheng("Shell 编程")
caozuoxitong-->jisuanjizuchengjigou("计算机组成结构")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
graph LR
javajichu("Java 基础")
javajichu-->jdk("JDK")
jdk-->jihe("集合")
jdk-->wenjiancaozuo("文件操作")
jdk-->duoxiancheng("多线程")
jdk-->nio("NIO")
jdk-->fanshe("反射")
jdk-->lamdba("Lambda")
jdk-->jbdc("JDBC")
jdk-->jndi("JNDI")
jdk-->rmi("RMI")
jdk-->jmx("JMX")
javajichu-->jvm("JVM")
jvm-->lajishoujiqi("垃圾收集器")
jvm-->leijiazaijizhi("类加载机制")
jvm-->classwenjianjiegou("Class 文件结构")
jvm-->canshutiaoyou("参数调优")
jvm-->zijiema("字节码")
jvm-->suoshengji("锁升级")
jvm-->jvmbingfa("JVM 并发")
jvm-->jit("JIT")
jvm-->jmm("JMM")
jvm-->zhichigongju("支持工具")
javajichu-->bingfabiancheng("并发编程")
bingfabiancheng-->xianchenganquan("线程安全")
bingfabiancheng-->xianchenchi("线程池")
bingfabiancheng-->aqs("AQS")
bingfabiancheng-->suo("锁")
bingfabiancheng-->leguanbeiguansuo("乐观/悲观锁")
bingfabiancheng-->fei/gongpingsuo("非/公平锁")
bingfabiancheng-->Concurrentgongjubao("Concurrent 工具包")
bingfabiancheng-->wusuoduilie("无锁队列")
bingfabiancheng-->ABA("ABA 问题")
bingfabiancheng-->weigongxiang("伪共享")
bingfabiancheng-->sisuo("死锁")
javajichu-->shejimoshi("设计模式")
javajichu-->ssm("SSM")
ssm-->ioc("IOC")
ssm-->aop("AOP")
ssm-->springboot("SpringBoot")
ssm-->mybaties("Mybaties")
ssm-->tomcat("Tomcat")
ssm-->rizhizujian("日志组件")
ssm-->gofshejimoshi("GoF设计模式23种")
ssm-->uml("UML")
ssm-->ddd("DDD")
ssm-->restful("Restful")
javajichu-->guzhangpaicha("故障排查")
guzhangpaicha-->neicunyichupaicha("内存溢出排查")
guzhangpaicha-->duiwaineicunpaicha("堆外内存排查")
guzhangpaicha-->wangluopaicha("网络排查")
guzhangpaicha-->iopaicha("I/O排查")
guzhangpaicha-->gaofuzaipaicha("高负载排查")
guzhangpaicha-->liuliangxianzhi("流量限制")
javajichu-->xingnengyouhua("性能优化")
xingnengyouhua-->neihecanshuyouhua("内核参数优化")
xingnengyouhua-->jvmyouhua("JVM 优化")
xingnengyouhua-->wangluocanshuyouhua("网络参数优化")
xingnengyouhua-->shiwuyouhua("事务优化")
xingnengyouhua-->shujukuyouhua("数据库优化")
xingnengyouhua-->chihua("池化")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
graph LR
fenbushi("分布式")
fenbushi--> caphebase("CAP/BASE")
fenbushi--> raft("Raft")
fenbushi--> paxos("Paxos")
fenbushi--> gossip("Gossip")
fenbushi--> zookeeper("Zookeeper")
fenbushi--> liangjieduanjiaohuan("两阶段交换")
fenbushi--> tcc("TCC")
fenbushi--> fenpian("分片")
fenbushi--> fuben("副本")
fenbushi--> quorunhenwr("Quorum/NWR")
fenbushi--> mideng("幂等")
fenbushi--> yizhixinghash("一致性哈希")
fenbushi--> idchengchengqi("ID生成器")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
graph LR
fenbushixitong("分布式系统")
fenbushixitong-->zhongjianjian("中间件")
zhongjianjian-->fenkufenbiao("分库分表")
fenkufenbiao-->shardingJDBC("ShardingJDBC")
shardingJDBC-->qierenchengci("切人层次")
shardingJDBC-->cuizhichaifen("垂直拆分")
shardingJDBC-->shuipingchaifen("水平拆分")
shardingJDBC-->duxiefenli("读写分离")
shardingJDBC-->chaifenliucheng("拆分流程")
shardingJDBC-->shujutongbu("数据同步")
shardingJDBC-->butingjiqiehuan("不停机切换")
shardingJDBC-->hahefailover("HA & FailOver")
zhongjianjian-->xiaoxiduilie("消息队列")
xiaoxiduilie-->kafka("Kafka")
kafka-->mqyingyongtu("MQ 用途")
kafka-->jibenganian("基本概念")
kafka-->shengchanzhezuijiashijian("生产者最佳实践")
kafka-->xiaofeizhezuijiashijian("消费者最佳实践")
kafka-->jiquangaokeyong("集群高可用")
kafka-->ackjibie("ACK 级别")
kafka-->shiwuxiaoxi("事务消息")
kafka-->jiankongjingbao("监控警报")
kafka-->KafkaStream("KafkaStream")
xiaoxiduilie-->RabbitMQ("RabbitMQ")
zhongjianjian-->huancun("缓存")
huancun-->redis("Redis")
redis-->leixing("String/Hash/List/Set/Zset")
redis-->jiqungaokeyong("集群高可用")
redis-->zuijiashijian("最佳实践")
redis-->qianwanjipaihanbang("千万级排行榜")
redis-->fenbushisuo("分布式锁")
redis-->xianliu("限流")
redis-->huancuntongbu("缓存同步")
redis-->shiyongguifan("使用规范")
fenbushixitong-->weifuwu("微服务&中间件")
weifuwu-->springcloud("SpringCloud")
weifuwu-->zhucezhongxin("注册中心")
weifuwu-->wangguan("网关")
weifuwu-->feignrpc("Feign rpc")
weifuwu-->rongduanhexianliu("熔断&限流")
weifuwu-->fuzaijunheng("负载均衡")
weifuwu-->huidu("灰度")
weifuwu-->jiankongbaojing("监控报警")
weifuwu-->rizhishouji("日志收集 ELKB")
weifuwu-->diaoyonglian("调用链")
weifuwu-->peizhizhongxin("配置中心")
weifuwu-->wendanghezhili("文档 & 治理")
weifuwu-->job("任务调度 Job")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
graph LR
yunwei("运维")
yunwei-->yunweijichu("运维基础")
yunweijichu-->ansiable("Ansiable")
yunweijichu-->xunihua("虚拟化")
yunweijichu-->rongqi("容器")
yunweijichu-->zidonghuajiaoben("自动化脚本")
yunweijichu-->cihecd("CI/CD")
yunweijichu-->jiankongxitong("监控系统")
yunweijichu-->devops("DevOps")
yunweijichu-->liuchengguifan("流程规范")
yunweijichu-->chengbenguanli("成本管理")
yunweijichu-->nginx("nginx")
yunweijichu-->k8s("k8s")
yunwei-->anquan("安全")
anquan-->sso("SSO")
anquan-->sqlzhuru("SQl注入")
anquan-->xss("XSS")
anquan-->csrf("CSRF")
anquan-->ddos("DDos")
anquan-->jiamijiemi("加密解密")
anquan-->zhengshutixi("证书体系")
anquan-->wangluogeli("网络隔离")
anquan-->oauth("OAuth")

在这里说明一下,本次的内容整理参考了 https://github.com/sayhiai/javaok 文章的很多内容,因为这里提到的很多内容是我有接触过的。那么我就以这个框架为基础,展开来整理。

坚持原创技术分享,您的支持将鼓励我继续创作!